# -*- coding: utf-8 -*-
# author: liangzilong
from flask import Flask

from flask_migrate import Migrate
from setting import dict_config

'''
创建APP的函数,参数是代表运行的类型：1、开发环境，2、生产环境
'''


def create_app(run_type):
    app = Flask(__name__)
    # 加载整改项目的配置
    app.config.from_object(dict_config.get(run_type))

    #  初始化SQLAlchemy
    from comment.modules import db
    db.init_app(app)
    #  初始化Redis的数据库连接
    from comment.utils.blog_redis import redis_client
    redis_client.init_app(app)
    # 配置入口 set FlASK_APP=main.py
    # 初始化Migrate ,可以执行命令： flask db init， flask db migrate，flask db upgrade
    # 执行以上的三个命令，需要默认的Flask项目入口文件。当前项目没有默认的项目入口文件。需要设置环境变量：
    Migrate(app, db)

    # 注册token认证的请求钩子
    from comment.utils.request_auth import jwt_request_auth
    app.before_request(jwt_request_auth)  # 注册钩子函数

    # # 注册蓝图
    from asys_main.resource.user import user_bp
    app.register_blueprint(user_bp)
    from asys_main.resource.ariticle import article_bp
    app.register_blueprint(article_bp)

    return app;
